import { cardCache } from "nc-lightapp-front";
let { getCacheById } = cardCache;
export default function (props, btnKey, btnKeyConfig, afterClick) {
    if (props.getUrlParam('status') == 'edit') {
        // 如果页面是编辑态，则返回浏览态
        toBrowse.call(this, props);
        afterClick && afterClick(false);
    } else {
        // 如果页面是新增态，并且有单据ID，判断页面由浏览态点新增按钮进入新增态，则恢复页面浏览态
        if (props.getUrlParam('id')) {
            toBrowse.call(this, props);
            afterClick && afterClick(false);
        } else {
            // 如果没有单据ID，判断页面由列表直接进入，则返回列表页面
            props.pushTo("/list", {
                pagecode: btnKeyConfig.listPagecode
            });
            afterClick && afterClick(true);
        }
    }
}

/**
 * 回复页面至浏览态
 */
function toBrowse(props) {
    // 设置页面状态标记
    props.setUrlParam({ status: 'browse' });
    // 尝试使用缓存回复数据
    let cardData = getCacheById(props.getUrlParam('id'), this.props.dataSource);
    if (cardData) {
        props.form.setAllFormValue({ [this.props.formAreaId]: cardData.head[this.props.formAreaId] });
        if (cardData.body && cardData.body[this.props.bodyAreaId]) {
            props.cardTable.setTableData(this.props.bodyAreaId, cardData.body[this.props.bodyAreaId]);
        } else {
            props.cardTable.setTableData(this.props.bodyAreaId, { rows: [] });
        }
    } else {
        // 如果找不到缓存，则使用默认方法回复数据
        props.form.cancel(this.props.formAreaId);
        props.cardTable.resetTableData(this.props.bodyAreaId);
    }
}